// 1.3 c++继承 - 继承类型

/**
 * 面向对象的编程语言有封装、继承 、抽象、多态等4个主要的特征
 * c++继承
 * 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类，这使得创建和维护一个应用程序变得更容易。这样做，也达到了重用代码功能和提高执行效率的效果。
 * 
 * 当创建一个类时，您不需要重新编写新的数据成员和成员函数，只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类，新建的类称为派生类。
 * 
 * 继承代表了 is a 关系。例如，哺乳动物是动物，狗是哺乳动物，因此，狗是动物，等等。
                                animal
                                 eat()
           基类--------->        sleep()
 
                                  Dog
           派生类-------->        bark()
 
 * 代码如下:
      //  基类
      class animal{
        // eat() 函数
        // sleep() 函数
      }

      // 派生类
      class Dog : public Animal{
        // bark() 函数
      }
 * 
 * ------------------------------
 * 继承类型
 * 当一个类派生自基类，该基类可以被继承为 public、protected 或 private 几种类型。继承类型是通过上面讲解的访问修饰符access-specifier 来指定的。
 * 
 * 我们**几乎不使用** protected 或 private 继承，通常使用 public 继承。当使用不同类型的继承时，遵循以下几个规则：

    1. 公有继承（public）：当一个类派生自公有基类时，基类的公有成员也是派生类的公有成员，基类的保护成员也是派生类的保护成员，基类的私有成员不能直接被派生类访问，但是可以通过调用基类的公有和保护成员来访问。
    2. 保护继承（protected）： 当一个类派生自保护基类时，基类的公有和保护成员将成为派生类的保护成员。
    3. 私有继承（private）：当一个类派生自私有基类时，基类的公有和保护成员将成为派生类的私有成员。
 *
*/

#include <iostream>

int main(void)
{
  
  printf("-----------------end-----------------\n");
  // system("pause");
  return 0;
}